#include <AVUIAnimatable.h>

namespace AVUI {

class IClientShader;

class PixelShader : public Animatable
{
    friend class Visual;
public:

    DECLARE_ELEMENT(PixelShader, Animatable);

    PixelShader();
    ~PixelShader();

    DECLARE_DEPENDENCY_PROPERTY(UriSource);
    TRefCountedPtr<Uri> get_UriSource() { return (Uri*)GetValue(get_UriSourceProperty()).get_Ptr(); }
    void set_UriSource(Uri* pValue) { SetValue(get_UriSourceProperty(), (Object*) pValue); }

protected:
    virtual TRefCountedPtr<Freezable> CreateInstanceCore() AVUI_OVERRIDE { return object_allocate<PixelShader>().get_Ptr(); }

private:

    IClientShader* get_ClientShader() { return m_pClientShader; }

    static void StaticConstructor();
    static void UriSourcePropertyChanged(DependencyObject* pDO, DependencyPropertyChangedEventArgs* e);

    IClientShader* m_pClientShader;
};



}; // namespace AVUI
